package main

import (
	"fmt"

	"github.com/garyburd/redigo/redis" // 引入redis包
)

type Monster struct {
	name  string
	age   int
	skill string
}

/*
Monster 信息 name age skill
编程 遍历出所有的monster信息 并显示在终端
提示 保存monster 可以使用hash 数据类型 遍历时先取出是所有的keys 比如 key monster*

*/

func main() {
	conn, err := redis.Dial("tcp", "127.0.0.1:6379")
	if err != nil {
		fmt.Println("redis.Dial err=", err)
		return
	}

	defer conn.Close()
	var name string
	var age int

	var skill string
	fmt.Scanf("%s %d  %s", &name, &age, &skill)

	fmt.Printf("npc name=%s npc age=%d npc skill= %s\n", name, age, skill)
	npc1 := Monster{
		name:  name,
		age:   age,
		skill: skill,
	}
	fmt.Println(npc1)

	// 向redis 写入数据
	_, err = conn.Do("HSet", "npc1", "name", npc1.name)
	if err != nil {
		fmt.Println("set err=", err)
		return
	}
	_, err = conn.Do("HSet", "npc1", "age", npc1.age)
	if err != nil {
		fmt.Println("set err=", err)
		return
	}
	_, err = conn.Do("HSet", "npc1", "skill", npc1.skill)
	if err != nil {
		fmt.Println("set err=", err)
		return
	}

	// 从redis 中读取数据
	r1, err := redis.String(conn.Do("HGet", "npc1", "name"))
	if err != nil {
		fmt.Println("hset err=", err)
	}
	r2, err := redis.Int(conn.Do("HGet", "npc1", "age"))
	if err != nil {
		fmt.Println("hget err=", err)
	}
	r3, err := redis.String(conn.Do("HGet", "npc1", "skill"))
	if err != nil {
		fmt.Println("hget err=", err)
	}
	fmt.Printf("操作ok r1 =%v r2 =%v r3=%v\n", r1, r2, r3)

}
